/**
 * 获取文件名和后缀
 * @param {String} name
 */
export const get_file_ext = (name) => {
    const last_len = name.lastIndexOf(".");
    const len = name.length;
    return {
        name: name.substring(0, last_len),
        ext: name.substring(last_len + 1, len)
    };
};

/**
 * 获取扩展名
 * @param {Array} fileExtname
 */
export const get_extname = (fileExtname) => {
    if (!Array.isArray(fileExtname)) {
        let extname = fileExtname.replace(/(\[|\])/g, "");
        return extname.split(",");
    } else {
        return fileExtname;
    }
    return [];
};

/**
 * 获取文件和检测是否可选
 */
export const get_files_and_is_max = (res, _extname) => {
    let filePaths = [];
    let files = [];
    if (!_extname || _extname.length === 0) {
        return {
            filePaths,
            files
        };
    }
    res.tempFiles.forEach((v) => {
        let fileFullName = get_file_ext(v.name);
        const extname = fileFullName.ext.toLowerCase();
        if (_extname.indexOf(extname) !== -1) {
            files.push(v);
            filePaths.push(v.path);
        }
    });
    if (files.length !== res.tempFiles.length) {
        uni.showToast({
            title: `当前选择了${res.tempFiles.length}个文件 ，${res.tempFiles.length - files.length} 个文件格式不正确`,
            icon: "none",
            duration: 5000
        });
    }

    return {
        filePaths,
        files
    };
};

/**
 * 获取图片信息
 * @param {Object} filepath
 */
export const get_file_info = (filepath) => {
    return new Promise((resolve, reject) => {
        uni.getImageInfo({
            src: filepath,
            success(res) {
                resolve(res);
            },
            fail(err) {
                reject(err);
            }
        });
    });
};
/**
 * 获取封装数据
 */
export const get_file_data = async (files, type = "image") => {
    // 最终需要上传数据库的数据
    let fileFullName = get_file_ext(files.name);
    const extname = fileFullName.ext.toLowerCase();
    let filedata = {
        name: files.name,
        uuid: files.uuid,
        extname: extname || "",
        cloudPath: files.cloudPath,
        fileType: files.fileType,
        thumbTempFilePath: files.thumbTempFilePath,
        url: files.path || files.path,
        size: files.size, //单位是字节
        image: {},
        path: files.path,
        video: {}
    };
    if (type === "image") {
        const imageinfo = await get_file_info(files.path);
        delete filedata.video;
        filedata.image.width = imageinfo.width;
        filedata.image.height = imageinfo.height;
        filedata.image.location = imageinfo.path;
    } else {
        delete filedata.image;
    }
    return filedata;
};
